//  import {
//    JSEncrypt
//  } from 'jsencrypt'

//  // 16进制转byte数组

//  function hexToBytes(hex) {
//    for (var bytes = [], c = 0; c < hex.length; c += 2)
//      bytes.push(parseInt(hex.substr(c, 2), 16));
//    return bytes;
//  }

//  // byte数组转16进制

//  function bytesToHex(bytes) {
//    for (var hex = [], i = 0; i < bytes.length; i++) {
//      hex.push((bytes[i] >>> 4).toString(16));
//      hex.push((bytes[i] & 0xF).toString(16));
//    }
//    return hex.join("");
//  };
//  JSEncrypt.prototype.encryptLong2 = function (string) {
//   console.log(this);
//    var k = this.getKey();

//    try {

//      var ct = ""; //RSA每次加密最大117bytes，需要辅助方法判断字符串截取位置

//      //1.获取字符串截取点

//      var bytes = new Array();

//      bytes.push(0);

//      var byteNo = 0;

//      var len, c;

//      len = string.length;

//      var temp = 0;

//      for (var i = 0; i < len; i++) {

//        c = string.charCodeAt(i);

//        if (c >= 0x010000 && c <= 0x10FFFF) {

//          byteNo += 4;

//        } else if (c >= 0x000800 && c <= 0x00FFFF) {

//          byteNo += 3;

//        } else if (c >= 0x000080 && c <= 0x0007FF) {

//          byteNo += 2;

//        } else {

//          byteNo += 1;

//        }

//        if ((byteNo % 117) >= 114 || (byteNo % 117) == 0) {

//          if (byteNo - temp >= 114) {

//            bytes.push(i);

//            temp = byteNo;

//          }

//        }

//      }

//      //2.截取字符串并分段加密

//      if (bytes.length > 1) {

//        for (var i = 0; i < bytes.length - 1; i++) {

//          var str;

//          if (i == 0) {

//            str = string.substring(0, bytes[i + 1] + 1);

//          } else {

//            str = string.substring(bytes[i] + 1, bytes[i + 1] + 1);

//          }

//          var t1 = k.encrypt(str);

//          ct += t1;

//        };

//        if (bytes[bytes.length - 1] != string.length - 1) {

//          var lastStr = string.substring(bytes[bytes.length - 1] + 1);

//          ct += k.encrypt(lastStr);

//        }

//        return hexToBytes(ct);

//      }

//      var t = k.encrypt(string);

//      var y = hexToBytes(t);

//      return y;

//    } catch (ex) {

//      return false;

//    }

//  };

//  // utf-8数组转字符串

//  function utf8ByteToUnicodeStr(utf8Bytes) {

//    var unicodeStr = "";

//    for (var pos = 0; pos < utf8Bytes.length;) {

//      var flag = utf8Bytes[pos];

//      var unicode = 0;

//      if ((flag >>> 7) === 0) {

//        unicodeStr += String.fromCharCode(utf8Bytes[pos]);

//        pos += 1;

//      } else if ((flag & 0xFC) === 0xFC) {

//        unicode = (utf8Bytes[pos] & 0x3) << 30;

//        unicode |= (utf8Bytes[pos + 1] & 0x3F) << 24;

//        unicode |= (utf8Bytes[pos + 2] & 0x3F) << 18;

//        unicode |= (utf8Bytes[pos + 3] & 0x3F) << 12;

//        unicode |= (utf8Bytes[pos + 4] & 0x3F) << 6;

//        unicode |= (utf8Bytes[pos + 5] & 0x3F);

//        unicodeStr += String.fromCharCode(unicode);

//        pos += 6;

//      } else if ((flag & 0xF8) === 0xF8) {

//        unicode = (utf8Bytes[pos] & 0x7) << 24;

//        unicode |= (utf8Bytes[pos + 1] & 0x3F) << 18;

//        unicode |= (utf8Bytes[pos + 2] & 0x3F) << 12;

//        unicode |= (utf8Bytes[pos + 3] & 0x3F) << 6;

//        unicode |= (utf8Bytes[pos + 4] & 0x3F);

//        unicodeStr += String.fromCharCode(unicode);

//        pos += 5;

//      } else if ((flag & 0xF0) === 0xF0) {

//        unicode = (utf8Bytes[pos] & 0xF) << 18;

//        unicode |= (utf8Bytes[pos + 1] & 0x3F) << 12;

//        unicode |= (utf8Bytes[pos + 2] & 0x3F) << 6;

//        unicode |= (utf8Bytes[pos + 3] & 0x3F);

//        unicodeStr += String.fromCharCode(unicode);

//        pos += 4;

//      } else if ((flag & 0xE0) === 0xE0) {

//        unicode = (utf8Bytes[pos] & 0x1F) << 12;;

//        unicode |= (utf8Bytes[pos + 1] & 0x3F) << 6;

//        unicode |= (utf8Bytes[pos + 2] & 0x3F);

//        unicodeStr += String.fromCharCode(unicode);

//        pos += 3;

//      } else if ((flag & 0xC0) === 0xC0) { //110

//        unicode = (utf8Bytes[pos] & 0x3F) << 6;

//        unicode |= (utf8Bytes[pos + 1] & 0x3F);

//        unicodeStr += String.fromCharCode(unicode);

//        pos += 2;

//      } else {

//        unicodeStr += String.fromCharCode(utf8Bytes[pos]);

//        pos += 1;

//      }

//    }

//    return unicodeStr;

//  }
//  JSEncrypt.prototype.decryptLong2 = function (string) {

//    var k = this.getKey();

//    var MAX_DECRYPT_BLOCK = 128; //分段解密最大长度限制为128字节

//    try {

//      var ct = "";

//      var t1;

//      var bufTmp;

//      var hexTmp;

//      var str = bytesToHex(string); //这块可能有些没有必要，因为sting参数已经及转为byte数组

//      var buf = hexToBytes(str);

//      var inputLen = buf.length;

//      //开始长度

//      var offSet = 0;

//      //结束长度

//      var endOffSet = MAX_DECRYPT_BLOCK;

//      //分段解密

//      while (inputLen - offSet > 0) {

//        if (inputLen - offSet > MAX_DECRYPT_BLOCK) {

//          bufTmp = buf.slice(offSet, endOffSet);

//          hexTmp = bytesToHex(bufTmp);

//          t1 = k.decrypt(hexTmp);

//          ct += t1;

//          console.log('分段' + offSet)

//          console.log(hexTmp)

//          console.log(t1)

//        } else {

//          bufTmp = buf.slice(offSet, inputLen);

//          hexTmp = bytesToHex(bufTmp);

//          t1 = k.decrypt(hexTmp);

//          ct += t1;

//          console.log('分段' + offSet)

//          console.log(hexTmp)

//          console.log(t1)

//        }

//        offSet += MAX_DECRYPT_BLOCK;

//        endOffSet += MAX_DECRYPT_BLOCK;

//      }

//      return ct;

//    } catch (ex) {

//      return false;

//    }

//  };
//  // btye数组转base64
//  function arrayBufferToBase64(buffer) {

//    var binary = '';

//    var bytes = new Uint8Array(buffer);

//    var len = bytes.byteLength;

//    for (var i = 0; i < len; i++) {

//      binary += String.fromCharCode(bytes[i]);

//    }

//    return window.btoa(binary);

//  }

//  // base64转btye数组
//  function base64ToArrayBuffer(base64) {

//    var binary_string = window.atob(base64);

//    var len = binary_string.length;

//    var bytes = new Uint8Array(len);

//    for (var i = 0; i < len; i++) {

//      bytes[i] = binary_string.charCodeAt(i);

//    }

//    return bytes;

//  }
//  export const getrsa = function (password) {

//    let encrypt = new JSEncrypt()

//    encrypt.setPublicKey('-----BEGIN PUBLIC KEY-----MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCgZnJ2mOq1J3SBlSCMu2gxepBfH01zqGEjMtRL9cFQogH/2TpJdxO9T7FOGcA6RzLFuykCrQEiFBIaMF+d0Yxpj5HWoFy5QpTpsbyUOJM9PVtSrBezl64Lx7X7Bl0BoVXwX//C1tpr6Ogb6UzC5zVpx+mo7BFaua2Zx2wjNQ+kjwIDAQAB-----END PUBLIC KEY-----')

//    let getrsadata = arrayBufferToBase64(encrypt.encryptLong2('-----BEGIN PUBLIC KEY-----MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCgZnJ2mOq1J3SBlSCMu2gxepBfH01zqGEjMtRL9cFQogH/2TpJdxO9T7FOGcA6RzLFuykCrQEiFBIaMF+d0Yxpj5HWoFy5QpTpsbyUOJM9PVtSrBezl64Lx7X7Bl0BoVXwX//C1tpr6Ogb6UzC5zVpx+mo7BFaua2Zx2wjNQ+kjwIDAQAB-----END PUBLIC KEY-----')); //将加密的数据转码为base64

//    return getrsadata //加密后的数据

//  }
//  export const decrsa = function (passwords) {

//    let encrypt = new JSEncrypt()

//    encrypt.setPrivateKey('-----BEGIN PRIVATE KEY-----MIICeAIBADANBgkqhkiG9w0BAQEFAASCAmIwggJeAgEAAoGBAKBmcnaY6rUndIGVIIy7aDF6kF8fTXOoYSMy1Ev1wVCiAf/ZOkl3E71PsU4ZwDpHMsW7KQKtASIUEhowX53RjGmPkdagXLlClOmxvJQ4kz09W1KsF7OXrgvHtfsGXQGhVfBf/8LW2mvo6BvpTMLnNWnH6ajsEVq5rZnHbCM1D6SPAgMBAAECgYEAlA68rXhtfhYTVuGekAkVHkbyKLuuNIpCT8lFaXBJpvJEQjPzt4hw8hgzo9HlPGYoGZivPEcRerFoHEB2oiihIAEW9LfCTwIVwbpDrrOOj9tjv8ejXkbmF5SWN8tUyRlwVexaSuMEojdqKr6lizwKVkurp32SRhMG8wQE3ugx1+ECQQDRcgwp69mhdDTPtDisrbIB5yfCN5SqkQBtJqmJjz5CnXojHdlSB0cMi7PuooQU5h2iKAkhug5mgeGJCq7NnsRnAkEAxA2acgKUmx+xFSn/HBYlBoHBW4dp5WbJPcacFoj4A1DGwhDHVCCBRnFWCo78BzWZsyrONVS8M0rXIcP8Dg/FmQJBAJXzqkPFSQ4wDbN7W2w9+4kjPzLs6jJoGD8NhCopdTDqYEyODU6OSU7xIoTCs//mdObo9QjBlZfMe3XLQTWT6xcCQEG/Nh4p02A6Po6UaOMoYf5OoWNqhA7Ua4R2CH5eLJ4gBqeqLM5/oBrZgztDPC3Gwead4k1sPzkMTh0atnqYu3ECQQCfIUnbk3yUbmXTyYJ0Nji8PGjoSNtLqjqRL28ifguC8nTwSikfHhqXhWqKetyJtFzvKD1Xq47Yk/uzApEpYwkr-----END PRIVATE KEY-----') // 私钥

//    let decrsadata = encrypt.decryptLong2(base64ToArrayBuffer(passwords)) // password要解密的数据 先转为byte数组在进行解码

//    return decrsadata //解密后的数据

//  }